// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

import QtQuick
import "."

/*实现一个按钮，禁止时显示一种颜色，按下时一种颜色，释放时一种颜色，点击时发送clicked信号。
*/
Rectangle {
    id: button
    color: baseColor                        //QQ为什么不直接使用 GameSettings.buttonColor ？
    onEnabledChanged: checkColor()          //处处是细节：属性enabled变化时，发送信号enabledChanged，槽函数是onEnabledChanged。当不知道什么时候用？
    radius: GameSettings.buttonRadius

    property color baseColor: GameSettings.buttonColor
    property color pressedColor: GameSettings.buttonPressedColor
    property color disabledColor: GameSettings.disabledButtonColor

    signal clicked()

    function checkColor()
    {
        if (!button.enabled) {          //Item.enabled
            button.color = disabledColor
        } else {
            if (mouseArea.containsPress)
                button.color = pressedColor
            else
                button.color = baseColor
        }
    }

    MouseArea {
        id: mouseArea
        anchors.fill: parent
        onPressed: checkColor()
        onReleased: checkColor()
        onClicked: {
            checkColor()
            button.clicked()    //发送信号：在指定区域点击，发送按键点击信号。
        }
    }
}
